Skip to main content

Agent 执行沙箱

Agent 要执行模型生成的代码、运行不可信的工具。执行沙箱决定了这些代码能碰到什么、碰不到什么,以及出问题时的爆炸半径。

本专题只讲生产运行时的隔离。 训练时也需要沙箱,但那是另一套东西 —— 并发规模差两个数量级、单个环境只活几十秒、而且必须能重置回同一个起点。那部分在 Agent 训练环境 专题,两者的逐条对比见 训练环境 01 篇

先约定几个词,本专题全程使用:

意思
沙箱(sandbox)一个受限的执行环境,里面的代码伤不到外面。注意它限制的是「破坏能力」,不是「信息搬运能力」
逃逸(escape)沙箱里的代码突破隔离、拿到宿主机权限。这是所有隔离方案最终要防的那件事
宿主(host)跑着沙箱的那台机器或那个进程。相对地,沙箱内部叫 guest
内核操作系统的核心,负责管硬件和进程。沙箱和宿主共不共享内核,是三条路线最根本的分界
系统调用(syscall)程序请求内核干活的接口,比如打开文件、发网络包。拦不拦系统调用、在哪一层拦,决定了隔离强度和开销
microVM精简过的虚拟机,去掉了传统虚拟机里绝大多数不必要的设备模拟,所以能在一百多毫秒内启动,代表实现是 Firecracker
爆炸半径出事之后影响到的范围。沙箱的意义就是把它从「整台宿主机」压缩到「一个沙箱实例」

一、这一层要回答的问题

模型生成了一段 rm -rf /,或者一个 MCP 工具在后台读你的 ~/.ssh/id_rsa —— 这两件事在没有隔离的环境里都会真的发生。

隔离要同时满足两个互相拉扯的要求:

隔离要同时满足两组互相拉扯的要求安全内核不共享 —— 逃逸不出宿主文件系统隔离 —— 看不见别人的数据网络受控 —— 拿到东西也发不出去方向相反可用冷启动足够快 —— 用户等不了 30 秒能装依赖 —— pip install 要能跑得起来状态可保留 —— 多轮对话共用一个环境隔离越强,启动越慢、资源开销越大。三条主流技术路线就是在这条轴上取的三个不同位置 ——所以「哪条路线最好」这个问题没有答案,只有「你的场景把滑块放在哪儿」。
把这两栏并排看,就能理解为什么沙箱这件事没有银弹:左边每加强一分,右边就要付出一分。

隔离越强,启动越慢、资源开销越大。三条主流技术路线就是在这条轴上的三个不同位置。

二、三条隔离路线

三条路线,按隔离强度从弱到强排列代表实现① 容器 · Docker / containerd② microVM · Firecracker③ 用户态内核 · gVisor靠什么隔离共享宿主内核靠 namespace + cgroup独立内核KVM 硬件虚拟化边界拦截系统调用在用户态重新实现一遍启动与开销启动约 100 ms开销最小启动约 125 ms内存开销约 5 MB启动快于虚拟机但系统调用有额外开销主要弱点内核漏洞即逃逸只隔了一层需要嵌套虚拟化支持不是所有云主机都给兼容性不是 100%冷门系统调用可能不支持注意三者的启动时间其实在同一个数量级 —— 真正拉开差距的是最后一行,以及宿主环境给不给你选的余地。
下一篇会逐条拆这三行背后的机制。这里先记住一件事:容器和 microVM 的启动时间差不多,所以「容器更快」不是选它的理由,「宿主不支持 KVM」才是。
← 快、弱隔离           慢、强隔离 →

三者不是简单的优劣关系 —— 02 篇会说明它们各自防住了什么、防不住什么。

三、正文构成

#标题覆盖内容
01为什么需要沙箱威胁场景、隔离的四个维度、什么时候不需要
02三条隔离路线容器 / microVM / 用户态内核的机制与边界
03E2B 与快照机制冷启动为什么能做到百毫秒级、暂停恢复怎么实现
04开源产品怎么做OpenHands 的五种 workspace 后端、Suna 的沙箱服务
05选型与落地判据、无沙箱路线的权限模型、与其他专题的接口

四、拆解对象

项目协议语言定位
daytonaio/daytona71,960Agent 运行环境,star 最高
firecracker-microvm/firecracker36,147Apache-2.0RustmicroVM,AWS Lambda 与 Fargate 的底座
kortix-ai/suna20,119NOASSERTIONTypeScript最接近 Manus 的开源实现
google/gvisor19,118Apache-2.0Go用户态内核
e2b-dev/E2B13,474Apache-2.0PythonAgent 沙箱的事实标准 SDK
superradcompany/microsandbox7,767Apache-2.0Rust轻量 microVM 方案
e2b-dev/infra1,331Apache-2.0GoE2B 的服务端,快照机制在这里
OpenHands/software-agent-sdk1,008MITPython五种 workspace 后端并存

五、与其他专题的关系

← 回到 Agent Infra 板块总览